/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package station;

/**
 *
 * @author safe
 */
public final class DataAbweichungsZeit {

    private static long lokaleAbWeichungsZeit = 0;
    // verschiebt den sndezeitpunkt des paketes im slot
    // bei negativen werten später
    // bei positiven früher
    private static long summeDerAbweichungen = 0;
    private static int anzahlDerStationen = 0;
    private static final float percentToAdapt = 20;
    private static String stationClass = "";

    private DataAbweichungsZeit() {
    }

    static String getStationClass() {
        return stationClass;
    }

    static void setStationClass(String ourclass) {
        stationClass = ourclass;
    }

    static long getAbWeichungsZeit() {
        return lokaleAbWeichungsZeit;
    }

    synchronized static void setDiffTime(long newTime) {
        lokaleAbWeichungsZeit = newTime;
    }

    synchronized static void adaptTimeOfStation(long foreignTime, long ourTime) {

        float diffValue = foreignTime - ourTime;

        float factor = percentToAdapt / 100;
        float ourAdaption = diffValue * factor;
        summeDerAbweichungen += (long)ourAdaption;
        anzahlDerStationen += 1;
    }

    synchronized static void adaptTimeFrameEnd() {
        if (anzahlDerStationen > 0) {
            lokaleAbWeichungsZeit += summeDerAbweichungen / anzahlDerStationen;

            anzahlDerStationen = 0;
        }
        summeDerAbweichungen = 0;
    }
}
